#pragma once
#include <string>
using namespace std;

class Person
{
public:
    Person(void)
    {
    }

    Person(const Person& original)
    {
        *this = original;
    }

    Person(const string& givenName, string familyName) :
        givenName(givenName), familyName(familyName)
    {
    }

    virtual ~Person(void){}
    
    Person& operator = (const Person& rhs)
    {
        if (this != &rhs)
        {
            this->givenName = rhs.givenName;
            this->familyName = rhs.familyName;
        }
        return *this;
    }

    bool operator < (const Person& rhs) const
    {
       return familyName < rhs.familyName;// && givenName < rhs.givenName;
    }

    bool operator == (const Person& rhs) const
    {
       return familyName == rhs.familyName && givenName == rhs.givenName;
    }



    string givenName;
    string familyName;

    string FullName() const
    {
       return givenName + " " + familyName;
    }
};

